The present disclosure relates to peer-to-peer network systems, more specifically, the present disclosure relates to a peer-to-peer file sharing system and method using downloadable data segments.
In a peer-to-peer (P2P) network system, there exists a method of sharing a file among the one or more peers (providers) who have a complete copy of the file, and other peers (consumers) who desire to obtain the file by downloading. Once a consumer has downloaded all or part of the file, it may begin providing the file to other consumers. In this manner, the peers distribute the “work” of downloading and uploading the file across the P2P network system. Files are downloaded beginning with the first byte, and proceeding sequentially to the last byte until the entire file has been downloaded.
A main problem of the above-described peer-to-peer file sharing method is that none of the consumers have a complete copy of the file and, if the providers become unavailable, the consumers must wait indefinitely for the complete file to become available in order for downloading to continue. When the file becomes available again, downloading begins from the offset of the last successfully retrieved byte.
The problem particularly arises when very few peers of the peer-to-peer file sharing system have a complete copy of the entire file; the problem is exacerbated when the file is a large file. The problem is illustrated by the following example.                1. Peer A connects to the peer-to-peer (P2P) network system and makes File1.txt (1024 bytes) available to the network.        2. Peer B begins downloading the file from Peer A beginning at the first byte and successfully downloads 512 bytes of data, and begins providing the data (at this point the peer is both a provider and a consumer).        3. Peer C begins downloading the file from Peer A beginning at the first byte and successfully downloads 256 bytes of data.        4. Peer A disconnects from the network (or otherwise ceases to provide File1.txt).        5. Peer C continues to download data from Peer B and successfully downloads another 256 bytes of data (for a total of 512 bytes).        
At this point there are no providers on the P2P network system that have a copy of the last 512 bytes of File1.txt as Peer B only managed to download the first 512 bytes before Peer A disconnected from the network. Both Peer B and Peer C must wait indefinitely for the complete file to become available. If other consumers connect to the P2P network and request the file, Peer B and Peer C may provide the partial copy of the file downloaded to the other peers, but until a provider with a complete copy of the file connects to the P2P network none of the consumers will be able to download the file, effectively halting the progress of the data transfer.
Peers are often expected to continue providing a file for some time after downloading it as “a courtesy” in order to make sure that a complete copy of the file remains on the P2P network system as long as possible. In many cases very few complete copies of the file may be available on the P2P network system, meaning that if any provider disconnects it harms the availability of the file for the entire P2P network system.
Based on the above, a need exists for a peer-to-peer file sharing system and method which overcomes the problem associated with prior art P2P network systems.